Planning License Features

Developing Applications Using The SoftwareShield System > Creating Licensing Solutions > Creating A License Project > Planning License Features

## Planning License Features

Planning a license is important because it is virtually impossible to change the behavior of the license after its been deployed without re-deploying it; just like it is virtually impossible to change the behavior of your programs without recompiling and re-deploying them.

Planning license features is just like defining your projects requirements. You need to look at what the license is expected to do immediately as well as what it might be expected to do in the future.

The most critical step in planning is determining how your program will need to interact with the license. Ask yourself these questions: Do I need a trial version? Do I want SoftwareShield to manage copy-protection? Do I want to manage my own copy-protection scheme? Do I need machine locking? Do I need the license to expire in one year no matter what? How many times should the user be able to execute the program before expiration? Will I need to possibly recover from an inconsistent license state using an Activation Code? Do I anticipate that hackers will try to defeat my programs license? Will I be distributing the program to other developers who have a legitimate need for debugging it? Do I need to implement pay per use now? What about in the future?

You can add up to 64 different Authorization Definitions to a single license. We recommend that you always include a Recover License Authorization Definition. There is no harm in including Authorization Codes that never get used, so feel free to plan for the future by adding more codes. The additional space taken up by a single Authorization Definition is usually less than a 60 bytes, so the impact on space is relatively small.

You can also combine numerous Authorization Definitions into a single one by using Composite Authorization Definitions. These allow you to activate multiple Authorizations at once using a single Activation Code your customer can input. Two types of composite codes (Design-Time Composites and Run-Time Composites) allow you a great deal of flexibility in determining complex behaviour of your license.